select count(*)とselect count(列名)の挙動の違い
確認用一時テーブル作成
select count(*)のアスタリスクの由来はなんだろう?
code:sql
create table #T(id int, name nvarchar(8), weight int);
insert into #T values (1, 'Ken', 70);
insert into #T values (2, 'Misako', 42);
insert into #T values (3, 'Kyoko', 43);
insert into #T values (null, null, null);
insert into #T values (5, 'Ken', 70);
insert into #T values (6, 'Riki', null);
code:sql
select * from #T;
table:result
id name weight
1 Ken 70
2 Misako 42
3 Kyoko 43
« NULL » « NULL » « NULL »
5 Ken 70
6 Riki « NULL »
COUNT(*)の件数確認
code:sql
select count(*) from #T;
table:result
__COLUMN1
6
COUNT(列名)の件数確認
code:sql
select count(name) from #T;
table:result
__COLUMN1
5
code:sql
select count(distinct name) from #T;
table:result
__COLUMN1
4
その他の集計関数
code:sql
select avg(weight) from #T;
table:result
__COLUMN1
56
参考
集計関数、集合関数、集約関数
/gosyujin-books/0182: SQL Server2016の教科書 開発編.pdf#623c65502c53d80000561d6c
集計関数ではNULLが無視される
COUNT (Transact-SQL) - SQL Server | Microsoft Learn
特定の列についての情報を使用しない
各行は1行としてカウントされ、NULL値を保持している行も含まれる